<!-- HTML header for doxygen 1.8.13-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>Open SCA: LifeCycle_impl Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { init_search(); });
</script>
<link href="customdoxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><a href="http://www.onetek.net"><img alt="Logo" src="openscaLogo.png"/></a></td>
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Open SCA
   &#160;<span id="projectnumber">Version 0.6.0</span>
   </div>
   <div id="projectbrief">Open SCA</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="inherits.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('class_life_cycle__impl.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="class_life_cycle__impl-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">LifeCycle_impl Class Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>The LifeCycle interface defines the generic operations for initializing or releasing instantiated component-specific data and/or processing elements.  
 <a href="class_life_cycle__impl.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="_resource__impl_8h_source.html">Resource_impl.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for LifeCycle_impl:</div>
<div class="dyncontent">
<div class="center"><img src="class_life_cycle__impl__inherit__graph.png" border="0" usemap="#_life_cycle__impl_inherit__map" alt="Inheritance graph"/></div>
<map name="_life_cycle__impl_inherit__map" id="_life_cycle__impl_inherit__map">
</map>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a31ddf4f2b830f3bbfe7492cfe0deb7fd"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_life_cycle__impl.html#a31ddf4f2b830f3bbfe7492cfe0deb7fd">~LifeCycle_impl</a> ()</td></tr>
<tr class="separator:a31ddf4f2b830f3bbfe7492cfe0deb7fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a258457f9837f3d7cbce6066557f1dbbd"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_life_cycle__impl.html#a258457f9837f3d7cbce6066557f1dbbd">LifeCycle_impl</a> ()</td></tr>
<tr class="separator:a258457f9837f3d7cbce6066557f1dbbd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a25a40b6614565f755233080a384c35f1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_life_cycle__impl.html#a25a40b6614565f755233080a384c35f1">initialize</a> ()  throw (	    CF::LifeCycle::InitializeError,	    CORBA::SystemException)</td></tr>
<tr class="memdesc:a25a40b6614565f755233080a384c35f1"><td class="mdescLeft">&#160;</td><td class="mdescRight">The purpose of the initialize operation is to provide a mechanism to set a component to a known initial state.  <a href="#a25a40b6614565f755233080a384c35f1">More...</a><br /></td></tr>
<tr class="separator:a25a40b6614565f755233080a384c35f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3b682cc681b745a22ffe45c93cabead0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_life_cycle__impl.html#a3b682cc681b745a22ffe45c93cabead0">releaseObject</a> ()  throw (	    CF::LifeCycle::ReleaseError,	    CORBA::SystemException)</td></tr>
<tr class="memdesc:a3b682cc681b745a22ffe45c93cabead0"><td class="mdescLeft">&#160;</td><td class="mdescRight">The releaseObject operation terminates execution of the application, returns all allocated computing resources, and de-allocates the resources’ capacities in use by the devices associated with the application.  <a href="#a3b682cc681b745a22ffe45c93cabead0">More...</a><br /></td></tr>
<tr class="separator:a3b682cc681b745a22ffe45c93cabead0"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>The LifeCycle interface defines the generic operations for initializing or releasing instantiated component-specific data and/or processing elements. </p>

<p>Definition at line <a class="el" href="_resource__impl_8h_source.html#l00117">117</a> of file <a class="el" href="_resource__impl_8h_source.html">Resource_impl.h</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a31ddf4f2b830f3bbfe7492cfe0deb7fd"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">~<a class="el" href="class_life_cycle__impl.html">LifeCycle_impl</a> </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="_resource__impl_8cpp_source.html#l00074">74</a> of file <a class="el" href="_resource__impl_8cpp_source.html">Resource_impl.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a258457f9837f3d7cbce6066557f1dbbd"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_life_cycle__impl.html">LifeCycle_impl</a> </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Definition at line <a class="el" href="_resource__impl_8h_source.html#l00123">123</a> of file <a class="el" href="_resource__impl_8h_source.html">Resource_impl.h</a>.</p>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a25a40b6614565f755233080a384c35f1"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void initialize </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
        <tr>
          <td align="right">throw </td><td>(</td><td colspan="2">	    CF::LifeCycle::InitializeError,</td>
        </tr>
        <tr>
          <td align="right"></td><td></td><td colspan="2">CORBA::SystemException</td>
        </tr>
        <tr>
          <td align="right"></td><td>)</td><td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>The purpose of the initialize operation is to provide a mechanism to set a component to a known initial state. </p>
<p>For example, data structures may be set to initial values, memory may be allocated, hardware devices may be configured to some state, etc.</p>
<p>Initialization behavior is implementation dependent. </p><dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname">The</td><td>initialize operation shall raise an InitializeError exception when an initialization error occurs. </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="_resource__impl_8cpp_source.html#l00079">79</a> of file <a class="el" href="_resource__impl_8cpp_source.html">Resource_impl.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a3b682cc681b745a22ffe45c93cabead0"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void releaseObject </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
        <tr>
          <td align="right">throw </td><td>(</td><td colspan="2">	    CF::LifeCycle::ReleaseError,</td>
        </tr>
        <tr>
          <td align="right"></td><td></td><td colspan="2">CORBA::SystemException</td>
        </tr>
        <tr>
          <td align="right"></td><td>)</td><td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>The releaseObject operation terminates execution of the application, returns all allocated computing resources, and de-allocates the resources’ capacities in use by the devices associated with the application. </p>
<p>Before terminating, the application removes the message connectivity with its associated applications (e.g., ports, resources, and logs) in the domain.</p>
<p>The following behavior is in addition to the LifeCycle::releaseObject operation behavior. The Application::releaseObject operation shall release each application component not created by a resource factory by utilizing the component’s Resource::releaseObject operation. The Application::releaseObject operation shall release each component created by a resource factory via the ResourceFactory::releaseResource operation. The Application::releaseObject operation shall terminate a resource factory when no more resources are managed by the resource factory via the ResourceFactory::shutdown operation. The Application::releaseObject operation shall terminate the processes / tasks on allocated executable devices belonging to each application component by utilizing the ExecutableDevice:terminate operation. The releaseObject operation shall de-allocate the memory associated with each application component instance from its allocated device by utilizing the LoadableDevice::unload operation.</p>
<p>The releaseObject operation shall deallocate the device capacities that were allocated during application creation. The actual devices deallocated (Device::deallocateCapacity) reflect changes in their capacity based upon component capacity requirements deallocated from them, which may also cause state changes for the devices.</p>
<p>The application shall release all object references to the components making up the application.</p>
<p>The releaseObject operation shall disconnect ports that were previously connected based upon the application’s software profile.</p>
<p>The releaseObject operation shall disconnect consumers and producers from a CORBA Event Service’s event channel based upon the software profile. The releaseObject operation may destroy a CORBA Event Service’s event channel when no more consumers and producers are connected to it.</p>
<p>For components (e.g., <a class="el" href="namespace_resource.html">Resource</a>, ResourceFactory) that are registered with Naming Service, the releaseObject operation shall unbind those components and destroy the associated naming contexts as necessary from the Naming Service.</p>
<p>The releaseObject operation for an application shall disconnect ports first, then release the resources and the resource factories, then call the terminate operation, and lastly call the unload operation on the devices.</p>
<p>The releaseObject operation shall, upon successful application release, write an ADMINISTRATIVE_EVENT log record.</p>
<p>The releaseObject operation shall, upon unsuccessful application release, write a FAILURE_ALARM log record.</p>
<p>The releaseObject operation shall send a DomainManagementObjectRemovedEventType event to the Outgoing Domain Management event channel upon successful release of an application. For this event,</p><ol type="1">
<li>The producerId is the identifier attribute of the released application.</li>
<li>The sourceId is the identifier attribute of the released application.</li>
<li>The sourceName is the name attribute of the released application.</li>
<li>The sourceCategory is “APPLICATION”.</li>
</ol>
<p>The following steps demonstrate one scenario of the application’s behavior for the release of an application that contains ResourceFactory behavior:</p><ol type="1">
<li>Client invokes releaseObject operation.</li>
<li>Disconnect Ports.</li>
<li>Release the ResourceFactory components.</li>
<li>Shutdown the ResourceFactory components.</li>
<li>Release the <a class="el" href="namespace_resource.html">Resource</a> components.</li>
<li>Terminate the components’ processes.</li>
<li>Unload the components’ executable images.</li>
<li>Change the state of the associated devices to be available, along with device(s) memory utilization availability and processor utilization availability based upon the Device Profile and software profile.</li>
<li>Unbind application components from Naming Service.</li>
<li>Log an Event indicating that the application was either successfully or unsuccessfully released.</li>
<li>Remove the application reference from the applications attribute and generate an event to indicate the application has been removed from the domain.</li>
</ol>
<dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname">The</td><td>releaseObject operation shall raise a ReleaseError exception when internal processing errors prevent the successful release of any application component. </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="_resource__impl_8cpp_source.html#l00087">87</a> of file <a class="el" href="_resource__impl_8cpp_source.html">Resource_impl.cpp</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>frameworks/libCF_Utils/include/<a class="el" href="_resource__impl_8h_source.html">Resource_impl.h</a></li>
<li>frameworks/libCF_Utils/src/<a class="el" href="_resource__impl_8cpp_source.html">Resource_impl.cpp</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.8.13-->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="class_life_cycle__impl.html">LifeCycle_impl</a></li>
    <li class="footer">Generated on Fri Jul 12 2019 14:31:54 for
    <a href="http://www.onetek.net">
    <img class="footer" src="openscaLogo.png" height="31" alt="openSCA"/></a>
    </li>
  </ul>
</div>
</body>
</html>
